/**
 * @author: Gene
 * @age: 永远18岁的美少年
 * @Email： yangjianyun@58.com
 * @date: 2021-12-23 14:38:04
 * @description: ts 中的 infer 关键字
 */
// 语句 let num 中，通过 let 来声明了一个变量，那怎样声明一个不确定的类型变量呢？
// 答案是使用 infer 关键字，infer R 就是声明了一个类型变量 R。

// =====>> infer  只能用于 extends 语句中。
// infer 的作用是让 TypeScript 自己推断，并将推断的结果存储到一个类型变量中

type Flatten<T> = T extends Array<infer U> ? U : never

type T0 = [string, number]
type T1 = Flatten<T0> // string | number